/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package ejb.dao;

import entidades.Producto;
import java.util.List;
import javax.ejb.Stateless;
import javax.persistence.Query;

/**
 *
 * @author ribadas
 */
@Stateless
public class ProductoDAO extends GenericoDAO<Producto> implements ProductoDAORemote, ProductoDAOLocal {


    public List<Producto> buscarPorDescripcion(String descripcion) {
        Query q = em.createQuery("SELECT object(p) FROM Producto AS p "+
                                 "  WHERE (p.descripcion LIKE :patron) OR "+
                                 "        (p.detalle LIKE :patron)");
        q.setParameter("patron", "%"+descripcion+"%");
        return q.getResultList();
    }

    public List<Producto> buscarPorMarca(String marca) {
        Query q = em.createQuery("SELECT object(p) FROM Producto AS p "+
                                 "  WHERE (p.marca LIKE :patron)");
        q.setParameter("patron", "%"+marca+"%");
        return q.getResultList();
    }

    public List<Producto> buscarPorModelo(String modelo) {
        Query q = em.createQuery("SELECT object(p) FROM Producto AS p "+
                                 "  WHERE (p.modelo LIKE :patron)");
        q.setParameter("patron", "%"+modelo+"%");
        return q.getResultList();
    }

    public List<Producto> buscarPorFamilia(Long idFamilia) {
        Query q = em.createQuery("SELECT object(p) FROM Producto AS p "+
                                 "  WHERE (p.familia.id = :idFamilia)");
        q.setParameter("idFamilia", idFamilia);
        return q.getResultList();
    }

    public List<Producto> buscarTodos() {
        Query q = em.createQuery("SELECT object(p) FROM Producto AS p");
        return q.getResultList();
    }

    public List<Producto> buscarTodosRango(int inicio, int tamano) {
        Query q = em.createQuery("SELECT object(p) FROM Producto AS p");
        q.setFirstResult(inicio);
        q.setMaxResults(tamano);
        return q.getResultList();
    }

    public int contador() {
        Query q = em.createQuery("SELECT count(p) FROM Producto AS p");
        return q.getFirstResult();
    }


    
    // Add business logic below. (Right-click in editor and choose
    // "Insert Code > Add Business Method")
 
}
